export default {
  install(Vue) {
    Vue.prototype.$imageFull = function(url) {
      if (!url) {
        return ''
      }
      url = String(url); // 强制转换为字符串
      const isHttp = url.startsWith("http://") || url.startsWith("https://");
      if (isHttp) {
        return url
      }
      return process.env.VUE_APP_API_BASE_URL + '/storage/' + url
    }

    Vue.prototype.$videoFull = function(url) {
      if (!url) {
        return ''
      }
      url = String(url); // 强制转换为字符串
      const isHttp = url.startsWith("http://") || url.startsWith("https://");
      if (isHttp) {
        return url
      }
      return process.env.VUE_APP_API_BASE_URL + '/' + url
    }

    /**
     * 验证对象数组中的字段是否符合指定类型要求
     * @param {Array} objArray - 要验证的对象数组
     * @param {Object} rules - 验证规则对象 {字段名: 类型}
     * @returns {Object} 返回验证结果 { isValid: Boolean, errors: Array }
     */
    Vue.prototype.$validateObjectArray = function(objArray, rules) {
      const errors = [];

      // 验证规则类型映射
      const typeValidators = {
        string: (value) => typeof value === 'string' && value.trim() !== '',
        number: (value) => typeof value === 'number' && value > 0,
        array: (value) => Array.isArray(value) && value.length > 0,
        object: (value) => typeof value === 'object' && value !== null && Object.keys(value).length > 0
      };

      // 验证每个对象
      objArray.forEach((obj, index) => {
        // 检查每个规则
        for (const [key, type] of Object.entries(rules)) {
          // 检查字段是否存在
          if (!(key in obj)) {
            errors.push(`对象[${index}]: 缺少必需字段 "${key}"`);
            continue;
          }

          // 获取验证函数
          const validator = typeValidators[type];
          if (!validator) {
            errors.push(`对象[${index}]: 字段 "${key}" 有未知的类型规则 "${type}"`);
            continue;
          }

          // 执行验证
          if (!validator(obj[key])) {
            errors.push(`对象[${index}]: 字段 "${key}" 不符合 ${type} 类型要求`);
          }
        }
      });
      return {
        isValid: errors.length === 0,
        errors
      };
    }

    //转换规格对象
    Vue.prototype.$transformData = function(originalData) {
      if(!originalData || originalData.length==0){
        return {}
      }
      return originalData?.map(item => {
        const transformedValues = item.values.map(value => {
          return {
            value: value,
            image: item.images[value] || null // 如果找不到对应的图片，返回null
          };
        });

        return {
          name: item.name,
          values: transformedValues
        };
      });

    }

    //上面函数的逆函数
    Vue.prototype.$reverseTransformData = function(transformedData) {
      return transformedData.map(item => {
        const images = {};
        const values = [];

        item.values.forEach(valueObj => {
          images[valueObj.value] = valueObj.image;
          values.push(valueObj.value);
        });

        return {
          images: images,
          name: item.name,
          values: values
        };
      });
    }











  }
};
